--[[--------
XWLUA模块：自旋锁

自旋锁是多核系统中为防止多个处理器同时访问公共的内存区域（称为临界区）而引入的一种锁。
当一个CPU获得自旋锁并访问临界区时，其他CPU只能 **自旋** 等待锁。
所谓 **自旋** ，是指不断循环测试 **锁** 是否已经解开。


自旋锁只是为SMP的场景设计的一种锁机制。在单核(UP)系统中，并不需要自旋锁。
但为了软件接口的统一，实现了虚假的自旋锁，只是对关闭抢占、中断底半部或中断的封装。


自旋锁还伴随其他操作：内存屏障，关闭调度器的抢占，关闭中断底半部，关闭中断等。


## **to-be-closed** 特性

**to-be-closed** 特性是 **Lua-5.4** 新引入的特性。拥有 **to-be-closed** 特性的变量，在离开其作用域时，会自动被 **关闭** 。
**关闭** 的行为是由元方法 **__close()** 来定义的。


XWLUA的自旋锁对象强指针具有 **to-be-closed** 特性，并提供了 **Scope Lock** 模式 。
当自旋锁对象强指针离开作用域时，会自动解锁关联的自旋锁。


## 不可重入锁

XWLUA的自旋锁是 **不可重入** 锁，不可重复上锁。

@module xwos.lock.splk
]]

--[[--------
新建一个自旋锁

@treturn userdata 新的自旋锁对象的强指针 `splksp`

@usage
mysplk = xwos.splk.new()
]]
function new()
end
